﻿//using System;
//using System.Collections.Generic;
//using System.Net.Sockets;
//using System.Text;
//using System.Net;
//using System.Threading;
//
////using System.Threading.Tasks;
//
//namespace Communication
//{
//    public class ServerListener : IDisposable
//    {
//        public static TcpListener srv;
//        private static ITaskConsumer _taskConsumer;
//
//        public ServerListener(ITaskConsumer taskConsumer, IPEndPoint endPoint)
//        {
//            srv = new TcpListener(endPoint);
//            _taskConsumer = taskConsumer;
//        }
//
//		 public ServerListener(ITaskConsumer taskConsumer, IPAddress ip, int port)
//			 : this (taskConsumer, new IPEndPoint(ip, port)) { }
//
//        public void Start() {
//            try
//            {
//                srv.Start();
//                while (true)
//                {
//                    _taskConsumer.ConsumeTask(srv.AcceptTcpClient());
//                }
//            }
//            catch(SocketException e)
//            {
//                Console.WriteLine("SocketException: {0}", e);
//            }
//            finally
//            {
//                srv.Stop();
//            }
//        }
//
//		public void StartAsync()
//		{
//			new Thread(Start).Start();
//		}
//
//        public void Stop()
//        {
//            srv.Stop();
//        }
//
//    	public void Dispose()
//    	{
//    		Stop();
//    	}
//    }
//}
